package top.chukongxiang.monitorservice.model.dto;

import lombok.Data;

import java.util.List;

/**
 * @author 楚孔响
 * @version 1.0
 * @date 2023/11/15 10:02
 */
@Data
public class UserInfo {

    /**
     *  工号（人员ID）
     */
    private String employeeNo;

    /**
     * 是否删除该用于，仅下发时生效
     */
    private Boolean deleteUser = false;

    /**
     * 姓名
     */
    private String name;

    /**
     * 人员类型
     */
    private String userType;

    /**
     * 是否关门延迟
     */
    private Boolean closeDelayEnabled;

    /**
     * 有效期参数
     */
    private Valid Valid;

    /**
     * 所属群组
     */
    private String belongGroup;

    /**
     * 密码
     */
    private String password;

    /**
     * 门权限, （代表对门1、门3有权限）（锁权限
     */
    private String doorRight;
    private List<RightPlan> RightPlan;

    /**
     * 最大认证次数
     */
    private Integer maxOpenDoorTime;

    /**
     * 已认证次数
     */
    private Integer openDoorTime;

    /**
     * 房间号
     */
    private Integer roomNumber;

    /**
     * 层号
     */
    private Integer floorNumber;

    /**
     * 反锁开门权限, desc:true-有权限，false-无权限
     */
    private Boolean doubleLockRight;

    /**
     * 是否具有设备本地UI访问权限, desc:true-有权限，false-无权限
     */
    private Boolean localUIRight;

    /**
     * 人员验证方式, [cardAndPw#刷卡+密码,card#刷卡,cardOrPw#刷卡或密码,fp#指纹,fpAndPw#指纹+密码,fpOrCard#指纹或刷卡,fpAndCard#指纹+刷卡,fpAndCardAndPw#指纹+刷卡+密码,faceOrFpOrCardOrPw#人脸或指纹或刷卡或密码,faceAndFp#人脸+指纹,faceAndPw#人脸+密码,faceAndCard#人脸+刷卡,face#人脸,employeeNoAndPw#工号+密码,fpOrPw#指纹或密码,employeeNoAndFp#工号+指纹,employeeNoAndFpAndPw#工号+指纹+密码,faceAndFpAndCard#人脸+指纹+刷卡,faceAndPwAndFp#人脸+密码+指纹,employeeNoAndFace#工号+人脸,faceOrfaceAndCard#人脸或人脸+刷卡,fpOrface#指纹或人脸,cardOrfaceOrPw#刷卡或人脸或密码
     * 人员验证方式的优先级高于读卡器验证方式。若为空表示清空人员验证方式
     */
    private String userVerifyMode;

    /**
     * 动态权限码
     */
    private String dynamicCode;

    /**
     * 呼叫号码列表
     * 默认规则X-X-X-X，如1-1-1-401, roomNumber字段扩展，支持列表时，使用列表配置相关信息
     */
    private List<String> callNumbers;

    /**
     * 层号列表
     * floorNumber扩展，支持列表时，可使用该字段配置层号
     */
    private List<Integer> floorNumbers;

    /**
     * 关联人脸数量,null为不支持
     */
    private Integer numOfFace;

    /**
     * 关联指纹数量
     */
    private Integer numOfFP;

    /**
     * 关联卡数量
     */
    private Integer numOfCard;

    /**
     * 人脸图片对应的人员性别, [male#男,female#女,unknown#未知]
     */
    private String gender;

    /**
     * 人员信息扩展
     */
    private List<PersonInfoExtend> PersonInfoExtends;

    /**
     * 组织架构
     */
    private String groupName;
    @Data
    public static class Valid {

        /**
         * 使能有效期
         */
        private Boolean enable;

        /**
         * 有效期起始时间, timeType字段不存在或为local时
         */
        private String beginTime;

        /**
         * 有效期结束时间, timeType字段不存在或为local时
         */
        private String endTime;

        /**
         * 时间类型
         */
        private String timeType;
    }

    @Data
    public static class RightPlan {

        /**
         * 门编号（锁ID）
         */
        private Integer doorNo;

        /**
         * 计划模板编号
         */
        private String planTemplateNo;
    }

    @Data
    public static class PersonInfoExtend {
        private String value;
    }
}
